<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>用两个栈实现队列</title>
</head>
<body>
  <a href="https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/">用两个栈实现队列</a>
  <div>
    用两个栈（先进后出）实现一个队列（先进先出）。队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead ，分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素，deleteHead 操作返回 -1 )
  </div>
  <div>
    使用两个栈（先进后出）实现队列（先进先出）效果，执行添加（push）的时候往栈A里面添加，执行删除的时候把栈A的值pop到栈B中，删除（pop）栈B中的值。实际就是倒过来删除。
  </div>
  <script>
    var CQueue = function() {
      this.box1 = [];
      this.box2 = [];
    };

    /** 
    * @param {number} value
    * @return {void}
    */
    CQueue.prototype.appendTail = function(value) {
      this.box1.push(value);
    };

    /**
    * @return {number}
    */
    CQueue.prototype.deleteHead = function() {
      if (this.box2.length) {
          return this.box2.pop();
      } else {
        while (this.box1.length) {
          this.box2.push(this.box1.pop());
        }
        if (!this.box2.length) {
          return -1;
        } else {
          return this.box2.pop();
        }
      }
    };

    /**
    * Your CQueue object will be instantiated and called as such:
    * var obj = new CQueue()
    * obj.appendTail(value)
    * var param_2 = obj.deleteHead()
    */
  </script>
</body>
</html>